package com.fast.alden.admin.service;

import com.fast.alden.common.service.BaseTreeNodeEntityService;
import com.fast.alden.data.model.SysMenu;
import com.fast.alden.data.repo.SysMenuRepository;

import java.util.List;

/**
 * 菜单管理服务类
 */
public interface SysMenuService extends BaseTreeNodeEntityService<SysMenu, SysMenuRepository> {
    /**
     * 为指定角色分配菜单
     *
     * @param roleId  角色ID
     * @param menuIds 菜单ID列表
     */
    void assign(Long roleId, List<Long> menuIds);

    /**
     * 为指定角色取消分配菜单
     *
     * @param roleId  角色ID
     * @param menuIds 菜单ID列表
     */
    void cancelAssign(Long roleId, List<Long> menuIds);

    /**
     * 根据菜单ID获取与之关联的角色列表
     *
     * @param roleId
     * @return
     */
    List<SysMenu> findMenusByRoleId(Long roleId);

    /**
     * 根据角色ID列表获取菜单列表
     *
     * @param
     * @return
     */
    List<SysMenu> findAllByRoleIds(List<Long> roleIds);

    /**
     * 根据角色ID列表获取菜单树列表
     *
     * @param
     * @return
     */
    List<SysMenu> treeListByRoleIds(List<Long> roleIds);
}
